package com.xgj.enums;

import jdk.nashorn.internal.ir.CallNode;

//枚举在开始就创建了这些对象：HTTP_ERROR，JSON_PARSE_ERROR
//不可以新增枚举常量对象
//枚举常量本质上是 public static final 的静态单例，由JVM保证其唯一性和线程安全
/**
 * 错误码枚举类
 * 用于标准化接口导入过程中的错误类型，采用数字形式的错误码以便前端处理。
 */
public enum ErrorCode {
    // -------------------- 外部接口错误 --------------------
    HTTP_ERROR(503, "外部接口调用失败"),
    JSON_PARSE_ERROR(400, "JSON 解析失败"),

    // -------------------- 数据校验错误 --------------------
    VALIDATION_ERROR(400, "数据校验失败"),
    EMAIL_FORMAT_ERROR(400, "邮箱格式无效"),
    PHONE_FORMAT_ERROR(400, "电话号码格式无效"),
    GENDER_FORMAT_ERROR(400, "性别格式无效"),

    // -------------------- 数据库错误 --------------------
    DB_CONNECTION_ERROR(500, "数据库连接失败"),
    DB_CONSTRAINT_VIOLATION(400, "数据库约束冲突"),
    DB_DUPLICATE_KEY(400, "主键或唯一键冲突"),
    DB_TIMEOUT(500, "数据库操作超时"),
    //保存数据出问题，表名是占位符
    DATABASE_TABLE_SAVE_ERROR(401, "数据库表 {tableName} 保存失败"), // 新增通用错误码，{tableName} 为占位符

    // -------------------- 系统错误 --------------------
    UNKNOWN_ERROR(500, "未知错误"),
    SYSTEM_ERROR(500, "系统内部错误");

    private final int code; // 错误码，采用整数类型
    private final String message; // 错误描述

    ErrorCode(int code, String message) {
        this.code = code;
        this.message = message;
    }

    public int getCode() {
        return code;
    }

    public String getMessage() {
        return message;
    }
}
